/**
  ETFRoot project, Anyang Normal University && IMP-CAS
  \class ETFVTrackManager
  \brief an abstract base class for track manager classes in ETFAna. All track
  manager classes are supposed to inherit from this class.
  \author SUN Yazhou, asia.rabbit@163.com
  \since 2022-04-28
  \date 2022-04-28 last modified
  \attention
  changelog
  <table>
  <tr>  <th>Date         <th>Author      <th>Description                   </tr>
  <tr>  <td>2022-04-28   <td>Asia Sun    <td>file created                  </tr>
  </table>

  \copyright Copyright (c) 2021 Anyang Normal U. && IMP-CAS with LGPLv3 LICENSE
*/

#ifndef ETFVTrackManager_h
#define ETFVTrackManager_h

#include <Rtypes.h>

class ETFVTrackManager{
public:
  virtual ~ETFVTrackManager();

  virtual void Draw() = 0; ///< draw the tracks
  virtual void Write() = 0; ///< write all the tracks to file
  virtual void Map() = 0; ///< do the overall tracking
  virtual void Map3D(){} ///< do the overall 3D tracking
  virtual void Register() = 0; ///< register tracks to main TTree
  virtual void Reset() = 0; ///< reset for next event
  virtual void Print(){}
  virtual void SetDebug(bool opt = true){}

  ClassDef(ETFVTrackManager, 0);

protected:
  ETFVTrackManager();

  bool fHasMapped, fHasMapped3D; ///< whether Map-s have been called
};

#endif
